package springAOP;


import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

/**
 * @date 2018-02-19 ���� 8:35 123123678
 * @author gzx 12321 gherjkhgkjerhkghkejrgerhgeghekjg8751236123
 */
@Component
@Aspect
public class Aop {

    /**
     * ��������,���ط���
     execution(
        public : ���������δ�(*��������)
        String : �����ķ���ֵ(*��������)
        springAOP..* : ��springAOP�������������Ӱ���������(..��ʾ�����Ӱ��µ�������)
        .run* : ������,�˴���ָ��������run��ͷ(*run*��ʾ������ֻ��Ҫrun����,����*run)
        (..) : ���ܵĲ�������,(..��ʾ���в���)[(int,*)��ʾ���ܲ���Ϊ2��,���е�һ��Ϊint����,�ڶ�����һ]
     )
     */
    @Pointcut("execution (public * springAOP..*.run*(..))")
    public void pointCutMethod(){};

/*    @Before("pointCutMethod()")
    public void before() {
        System.out.println("method start");
    }

    @After("pointCutMethod()")
    public void after(){
        System.out.println("method end");
    }*/

    @Around("pointCutMethod()")
    public void around(ProceedingJoinPoint joinpoint) throws Throwable {
        //��������һЩ�ж�
        if(1==1){
            System.out.println("������������,��ʼִ�з���!");
            joinpoint.proceed();
            System.out.println("ִ�з������!");
        }else{
            System.out.println("��������������,ֱ���˳�!");
        }
    }
}
